/*
  EJERCICIO:
   Implementar la funcion invertir(lista, i, j) que retorna una nueva lista invirtiendo
   el orden de los elementos entre el indice i y el j (ver ejemplos).

    Ayuda: Cuenta con las funciones agregar(lista, elem) y longitud(lista)
*/
package cursopoo.ejercicios
import static cursopoo.herramientas.EjerciciosIniciales.*

def ejemplo = ['Este', 'es', 'un', 'ejemplo']

println invertir(ejemplo, 0, 2) // resultado: [un, es, Este, ejemplo]
println invertir(ejemplo, 2, 3) // resultado: [Este, es, ejemplo, un]

def invertir(lista, i, j) {
    def resultado = []
    // PARAHACER
    // CAMBIAR
    if (i > j || i > longitud(lista) || i < 0 || j < 0 || j > longitud(lista)) {
        return resultado
    }
    for (def n = 0; n < i; n++) {
        agregar(resultado, lista[n])
    }
    for (def n = j; n >= i; n--) {
        agregar(resultado, lista[n])
    }
    for (def n = j + 1; n < longitud(lista); n++) {
        agregar(resultado, lista[n])
    }
    // POR nada
    return resultado
}
